package com.zwps.biz.domain.service;

import java.util.List;
import java.util.Map;

import com.zwps.biz.api.model.dto.file.record.biz.*;
import com.zwps.biz.api.model.vo.file.record.FileVO;
import com.zwps.biz.api.model.vo.file.record.biz.FileRecordBizVO;
import com.zwps.biz.api.model.vo.file.record.biz.SelectFileRecordBizPageVO;
import com.zwps.common.api.model.vo.PageInfoVO;

/**
 * 
 * @ClassName: FileRecordBizService
 * @Description: 
 * @author lyh
 * @date 2023年8月15日 下午6:12:47
 *
 */
public interface FileRecordBizService {

    /**
     * 新增文件记录与业务表关联
     * @Title: addFileRecordBizs
     * @Description: 
     * @param dto void
     * @author lyh
     * @date 2023年8月15日 下午6:12:51
     */
    void addFileRecordBizs(AddFileRecordBizDTO dto);

    /**
     * 删除文件记录与业务表关联
     * @Title: deleteFileRecordBizs
     * @Description: 
     * @param dto void
     * @author lyh
     * @date 2023年8月15日 下午6:12:54
     */
    void deleteFileRecordBizs(DeleteFileRecordBizDTO dto);
    
    /**
     * 批量删除文件记录与业务表关联
     * @Title: batchDeleteFileRecordBizs
     * @Description: 
     * @param dto void
     * @author lyh
     * @date 2023年8月16日 上午9:33:57
     */
    void batchDeleteFileRecordBizs(BatchDeleteFileRecordBizDTO dto);
    
    /**
     * 差异更新（旧的删除、新的新增、相同的不变）
     * @Title: differUpdateFileRecordBizs
     * @Description: 
     * @param dto void
     * @author lyh
     * @date 2023年8月15日 下午6:12:44
     */
    void differUpdateFileRecordBizs(DifferUpdateFileRecordBizDTO dto);

    List<FileRecordBizVO> selectFileRecordBizs(SelectFileRecordBizDTO dto);

    /**
     * 查询指定业务ID的文件列表
     * @Title: selectFiles
     * @Description: 
     * @param bizTable
     * @param bizId
     * @return List<FileVO>
     * @author lyh
     * @date 2023年8月16日 上午10:47:20
     */
    List<FileVO> selectFiles(String bizTable, String bizId);

    /**
     * 查询文件关联记录列表
     * @Title: selectFileRecordBiz
     * @Description:
     * @param dto
     * @return List<FileRecordBizVO>
     * @author cg
     * @date 2023年9月9日 上午10:44:47
     */
    List<FileRecordBizVO> selectFileRecordBiz(String fileId);

    PageInfoVO<SelectFileRecordBizPageVO> selectFileRecordBizPage(SelectFileRecordBizPageDTO dto);

    void addFileRecordBiz(AddRecordBizDTO dto);

    void updateFileRecordBiz(String id, UpdateRecordBizDTO dto);

    void deleteFileRecordBiz(String ids);

    /**
     *
     * @param bizTable
     * @param bizIds
     * @return
     */
    Map<String, List<FileVO>> batchSearchFiles(String bizTable, List<String> bizIds);
}
